<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <script type="text/javascript">
  /* 
  强制类型转换
  1.强制转换主要指一种数据类型强制转换为另一种数据类型，主要指String,Number,Boolean
  2.其它强制转换字符串：
    2.1 toString方法：
       2.1.1 该方法不会影响原变量，会生成新的数值变量
       2.1.2 如果是null，undefined使用该方法,会报错
    2.2 String方法：
      2.2.1 使用String()函数做强制类型转换时，对于Number和Boolean实际上就是调用的toString()方法
      2.2.2 但是对于null和undefined，就不会调用toString()方法，
                它会将 null 直接转换为 "null"，
                将 undefined 直接转换为 "undefined"
  3.其它类型转换为数值
    3.1 使用Number()函数
        1.字符串->数字
          1.1 如果是纯数字型字符串，会转换为数字
          1.2 如果是不是数字型字符串，则会显示NaN
          1.3 如果字符串是一个空串或者是一个全是空格的字符串，则转换为0
        2.布尔->数字
          2.1 true返回1；
          2.2 false返回0；
        3.null->数字：返回0
        4.undifined->数字：返回NaN
    3.2 使用专门的方式对付字符串
       1.parseInt()和parseFloat()：
        1.1 可以将一个字符串中的有效的整数内容去出来，然后转换为Number
        1.2 如果对非String使用parseInt()或parseFloat()，它会先将其转换为String然后在操作
  4.其它类型转换为布尔
    使用Boolean函数
       1.数字->布尔
           1.1 非零转换为true
           1.2 0和NaN为false
       2.字符串->布尔
          2.1 非空为true
          2.2 空值为false
       3.null，undefined->布尔:为false
       4.对象->布尔：true

                            
   */
   /*
   //其它类型强制转换为字符串
   var num1=123;
   var str1=num1.toString();
   console.log(typeof(str1));//String
   console.log(typeof(num1));//Number


   var bool1=true;
   var str2=bool1.toString(bool1);
   console.log(typeof(str2));//String
   console.log(typeof(bool1));//Boolean

   var str3=null;
   //var str5=str3.toString();
   var str4=undefined;
   //var str6=str4.toString();
   console.log(typeof(str5));//05.强制类型转换.html:33 Uncaught TypeError: Cannot read property 'toString' of null
   console.log(typeof(str6));//05.强制类型转换.html:35 Uncaught TypeError: Cannot read property 'toString' of undefined
    
  console.log("-----------------------------------------------"); 
   var num10=123;
   var str11=String(num10);
   console.log(typeof(str11));//String
   console.log(typeof(num10));//Number


   var bool11=true;
   var str12=String(bool11);
   console.log(typeof(str12));//String
   console.log(typeof(bool11));//Boolean

  var str20=null;
  var str21=String(str20);
  console.log(typeof(str20));//Object
  console.log(typeof(str21));//string,null

  var str30=undefined;
  var str31=String(str30);
  console.log(typeof(str30));//undefined
  console.log(typeof(str31));//string,undefined
  
  //其它类型强制转换为数字
  console.log("-----------------------------------------------"); 
  var str1="666";
  var num1=Number(str1);
  console.log(typeof(num1));//Number
  console.log(typeof(str1));//String

  var str2="jason";
  var num2=Number(str2);
  console.log(str2);//jason
  console.log(num2);//NaN
  console.log(typeof(num2));//Number
  console.log(typeof(str2));//String

  //var str3="";
  var str3="   ";
  var num3=Number(str3);
  console.log(str3);
  console.log(num3);//0
  
  console.log("-----------------------------------------------"); 
  var str1=null;
  var num1=Number(str1);
  console.log(str1);//null
  console.log(num1);//0

  var str2=undefined;
  var num2=Number(str2);
  console.log(str2);//undefined
  console.log(num2);//NaN
*/
  //使用parseXXX函数
  //1.parseInt()函数：可以将一个字符串中的有效的整数内容去出来，然后转换为Number
  var str1="135px";
  var num1=parseInt(str1);
  console.log(num1);//135
  //2.parseFloat()函数：用法基本和parseInt()类似
  var str2="146.13.56px";
  var num2=parseFloat(str2);
  console.log(num2);//146.13
 //如果对非String使用parseInt()或parseFloat(),它会先将其转换为String然后在操作
  var bool=true;
  var num3=parseInt(true);
  console.log(num3);//NaN

  </script>
</head>
<body>
  
</body>
</html>